import ffmpeg,random

# 打开视频文件
video_file=f'1.mp4'
# 获取视频宽度和高度
video_info = ffmpeg.probe(video_file)
video_width = video_info['streams'][0]['width']
video_height = video_info['streams'][0]['height']
# 获取视频时长
duration = float(video_info['format']['duration'])

input_video = ffmpeg.input(video_file)
input_audio = ffmpeg.input(video_file).audio
# 生成随机帧率
frame_rate = round(random.uniform(55, 60), 2)

# 设置帧率
output_video = input_video.filter('fps', fps=frame_rate, round='up')
#虚化有问题
#output_video = output_video.filter('boxblur', luma_radius=10, chroma_radius=10)
#裁剪上下左右边距2
output_video = output_video.filter('crop', video_width-4, video_height-4, 2, 2)
#画中画效果
# 使用 split 过滤器将视频分为两路
split = output_video.filter_multi_output('split')
# 第一路视频裁剪左上角的 10x10 像素
bg = split[0].filter('crop', 'in_w-20', 'in_h-20', 10, 10)
# 第二路视频缩小到原来的四分之一
pip = split[1].filter('scale', 'iw/4', -1)
# 将第二路视频叠加在第一路视频的右下角
output_video = ffmpeg.filter([bg, pip], 'overlay', 'W-w-10', 'H-h-10')

# 设置输出分辨率为 720x1280
output_video = output_video.filter('scale', width=720, height=1280)

# 对视频进行处理，裁剪掉头尾各 0.3 秒
output_video = output_video.trim(start=round(random.uniform(0.3, 0.5), 2), end=duration-0.3)

#随机亮度
output_video = output_video.filter('eq', brightness=random.uniform(-0.1, 0.1), gamma=1.0)

# 获取随机速率
speed = random.uniform(0.95, 1.05)
# 对视频进行处理，设置视频速率
output_video = output_video.filter('setpts', f'{speed}*PTS')

# 对音频进行处理，设置音频速率
output_audio = input_audio.filter('atempo', speed)
output_audio = output_audio.filter('volume', volume=2)
# 输出视频文件
ffmpeg.output(output_video, output_audio, 'output.mp4').run()

